     program Numericaldifferentiations
      
      real*8 h,x,y,df
      dimension x(20),y(20),df(20),ddf(20)
      integer n,i,j
      n=7
      h=0.1

      data(x(i),i=1,7)/0.2,0.3,0.4,0.5,0.6,0.7,0.8/
      data(y(j),j=1,7)/0.185,0.106,0.093,0.24,0.597,0.561,0.468/
      
      ! =======================
      ! FIRST ORDER DERIVATIVES
      ! =======================
      print*,'--First order derivatives--'
      
      ! O prwtos oros
      df(1)=-(3*y(1)-4*y(2)+y(3))/(2.*h)
      print*,df(1)
      
      ! Oi endiamesoi oroi
      do j=2,n-1
        df(j)=-(y(j-1)-y(j+1))/(2.*h)
        print*,df(j)
      enddo

      ! O teleytaios oros
      df(n)=-(-3*y(n)+4*y(n-1)-y(n-2))/(2.*h)
      print*,df(n)
      
      ! ======================== 
      ! SECOND ORDER DERIVATIVES
      ! ========================
      print*,' '
      print*,'--Second order derivatives--'

      ! O prwtos oros
      ddf(1)=(2*y(1)-5*y(2)+4*y(3)-y(4))/(h*h)
      print*,ddf(1)

      ! Oi endiamesoi oroi
      do j=2,n-1
        ddf(j)=(y(j-1)-2*y(j)+y(j+1))/(h*h)
        print*,ddf(j)
      enddo

      ! O teleytaios oros
      ddf(n)=(2*y(n)-5*y(n-1)+4*y(n-2)-y(n-3))/(h*h)
      print*,ddf(n)

      end